package com.ym.pms.service;

import com.github.pagehelper.PageInfo;
import com.ym.pms.model.Item;

import java.util.List;

public interface ItemService {

    /**
     * 查询item表的所有信息（不推荐使用）
     * @return list<Item> : item 对象的集合,如果没有，则返回null
     */
    PageInfo<Item> findAllItems(int pageNum,int pageSize);

    /**
     * 查询item表的所有状态为  **启用**  的信息
     * @return list<Item> : item 对象的集合,如果没有，则返回null
     */
    PageInfo<Item> findAllItemsOfS(int pageNum,int pageSize);

    /**
     * 通过id查找item对象
     * @param id：item的主键
     * @return item对象
     */
    Item findById( String id );

    /**
     * 根据Item对象（通过item.itId(String)查询）更新item表中的数据
     * @param item
     * @return 数据表中改动的条数
     */
    int update( Item item );

    /**
     * 批量更新Item表
     * @param items 需要更改的item对象的集合
     * @return 数据表中改动的总条数
     */
    int bulkUpdate(List<Item> items);

    /**
     * 通过id(String)删除信息
     * @param id item表的主键
     * @return 删除表中数据的条数
     */
    int deleteById( String id );

    /**
     * 在item表中添加一个数据
     * @param item Item对象（不需要写No和Id，系统自动生成）
     * @return 数据表中添加数据的条数
     */
    int addItem ( Item item );

    /**
     * 获取item表中最大的No；
     * @return 返回最大的No
     */
    Integer getItemMaxNo();

    /**
     * 自动生成Item_Id   ( IT+时间+数据表编号 varchar（20）)
     * @return Item_Id
     */
    String getItemCoding();

    /**
     * 模糊查询，将模糊查询的条件封装到item对象中（关键字查询,不扫描item。ItEState属性），
     * 返回数据表中所有符合条件的结果
     * @param item 待查询内容的封装对象
     * @return 返回符合条件的Item对象的集合
     */
    PageInfo<Item> fuzzyQuery(Item item,int pageNum,int pageSize);

    /**
     * 模糊查询，将模糊查询的条件封装到item对象中（关键字查询,不扫描item。ItEState属性），
     * 返回数据表中所有符合条件的 **启用** 结果，
     * @param item 待查询内容的封装对象
     * @return 返回符合条件的Item对象的集合
     */
    PageInfo<Item> fuzzyQueryOfS(Item item, int pageNum, int pageSize);

    Integer getTotalNumber();
}
